/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import com.sun.jmx.snmp.Timestamp;
import java.sql.ResultSet;
import java.util.ArrayList;
import pojo.GiayPOJO;
import util.MySQLDataAccessHelper;

/**
 *
 * @author NhatHuy
 */
public class GiayDAO {
    /**
     * Phương thức lấy danh mục giày.
     */
    public static ArrayList<GiayPOJO> layDanhMucGiay(){
        ArrayList<GiayPOJO> ds = new ArrayList<GiayPOJO>();
        try{
            //Lấy tham số : số giày hiển thị trên 1 trang.
            int soSanPhamTrenTrang = ThamSoDAO.laySoLuongSanPhamTrenTrangClient();
            //Tính chỉ số giày bắt đầu lấy ra trong csdl.
            String sql = "SELECT * FROM GIAY ORDER BY MaGiay desc LIMIT 0,10";
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            while (rs.next()){
                GiayPOJO giay = new GiayPOJO();
                giay.setMaGiay(rs.getInt("MaGiay"));
                giay.setTenGiay(rs.getString("TenGiay"));
                giay.setGioiTinh(rs.getInt("GioiTinh"));
                giay.setGiaBan(rs.getFloat("GiaBan"));
                giay.setSoLuong(rs.getInt("SoLuong"));
                giay.setHinhAnh(rs.getString("HinhAnh"));
                giay.setMaMauSac(rs.getInt("MaMauSac"));
                giay.setMaLoaiGiay(rs.getInt("MaLoaiGiay"));
                giay.setMaTinhTrang(rs.getInt("MaTinhTrang"));
                ds.add(giay);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return ds;
    }
    /**
     * Phương thức lấy danh mục giày theo mã loại giày - client - phân trang.
     */
    public static ArrayList<GiayPOJO> layDanhMucGiay_TheoGioiTinh_TheoLoaiGiay_Client_PhanTrang(int gioiTinh, int maLoaiGiay, int trang){
        ArrayList<GiayPOJO> ds = new ArrayList<GiayPOJO>();
        try{
            //Lấy tham số : số giày hiển thị trên 1 trang.
            int soSanPhamTrenTrang = ThamSoDAO.laySoLuongSanPhamTrenTrangClient();
            //Tính chỉ số giày bắt đầu lấy ra trong csdl.
            int batDau = (trang - 1) * soSanPhamTrenTrang;
            String sql = "SELECT * FROM GIAY WHERE MaTinhTrang!=3"
                    + " AND GioiTinh=%d AND MALOAIGIAY=%d ORDER BY MaGiay desc LIMIT %d,%d";
            sql = String.format(sql, gioiTinh, maLoaiGiay, batDau, soSanPhamTrenTrang);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            while (rs.next()){
                GiayPOJO giay = new GiayPOJO();
                giay.setMaGiay(rs.getInt("MaGiay"));
                giay.setTenGiay(rs.getString("TenGiay"));
                giay.setGioiTinh(rs.getInt("GioiTinh"));
                giay.setGiaBan(rs.getFloat("GiaBan"));
                giay.setSoLuong(rs.getInt("SoLuong"));
                giay.setHinhAnh(rs.getString("HinhAnh"));
                giay.setMaMauSac(rs.getInt("MaMauSac"));
                giay.setMaLoaiGiay(rs.getInt("MaLoaiGiay"));
                giay.setMaTinhTrang(rs.getInt("MaTinhTrang"));
                ds.add(giay);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return ds;
    }
    
    /**
     * Phương thức lấy danh mục giày có phân trang trên trang quản trị.
     */
    public static ArrayList<GiayPOJO> layDanhMucGiayCoPhanTrangAdmin(int trang){
        ArrayList<GiayPOJO> ds = new ArrayList<GiayPOJO>();
        try{
            int soSanPhamTrenTrangQuanTri = ThamSoDAO.laySoLuongSanPhamTrenTrangQuanTri();
            int batDau = (trang - 1) * soSanPhamTrenTrangQuanTri;
            String sql = "SELECT * FROM GIAY ORDER BY MaGiay desc LIMIT %d,%d";
            sql = String.format(sql, batDau, soSanPhamTrenTrangQuanTri);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            while (rs.next()){
                GiayPOJO giay = new GiayPOJO();
                giay.setMaGiay(rs.getInt("MaGiay"));
                giay.setTenGiay(rs.getString("TenGiay"));
                giay.setGioiTinh(rs.getInt("GioiTinh"));
                giay.setGiaBan(rs.getFloat("GiaBan"));
                giay.setSoLuong(rs.getInt("SoLuong"));
                giay.setHinhAnh(rs.getString("HinhAnh"));
                giay.setMaMauSac(rs.getInt("MaMauSac"));
                giay.setMaLoaiGiay(rs.getInt("MaLoaiGiay"));
                giay.setMaTinhTrang(rs.getInt("MaTinhTrang"));
                ds.add(giay);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return ds;
    }
    
    /**
     * Phương thức lấy thông tin giày theo mã giày.
     */
    public static GiayPOJO layThongTinGiay(int maGiay){
        GiayPOJO giay = new GiayPOJO();
        try{
            String sql = "SELECT * FROM GIAY WHERE MAGIAY=%d ORDER BY MaGiay desc";
            sql = String.format(sql, maGiay);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            while (rs.next()){
                giay.setMaGiay(rs.getInt("MaGiay"));
                giay.setTenGiay(rs.getString("TenGiay"));
                giay.setGioiTinh(rs.getInt("GioiTinh"));
                giay.setGiaBan(rs.getFloat("GiaBan"));
                giay.setSoLuong(rs.getInt("SoLuong"));
                giay.setHinhAnh(rs.getString("HinhAnh"));
                giay.setMaMauSac(rs.getInt("MaMauSac"));
                giay.setMaLoaiGiay(rs.getInt("MaLoaiGiay"));
                giay.setMaTinhTrang(rs.getInt("MaTinhTrang"));
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return giay;
    }
    
        /**
     * Phương thức lấy số lượng giày.
     */
    public static int laySoLuongGiay(){
        int tong = 0;
        try{
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            String sql = "SELECT COUNT(*) AS SOLUONG FROM GIAY ORDER BY MaGiay desc";
            ResultSet rs = helper.executeQuery(sql);
            if (rs.next()){
                tong = rs.getInt("SoLuong");
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return tong;
    } 
    
      /**
     * Phương thức tính số lượng trang.
     */
    public static int tinhSoLuongTrangTrenTrangQuanTri(){
        int soTrang = 0;
        try{
            int soLuongSanPhamTrenTrangQuanTri = ThamSoDAO.laySoLuongSanPhamTrenTrangQuanTri();
            int soLuong = GiayDAO.laySoLuongGiay();
            soTrang = soLuong/soLuongSanPhamTrenTrangQuanTri;
            if (soLuong % soLuongSanPhamTrenTrangQuanTri != 0){
                soTrang++;
            }
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return soTrang;
    }  
    
      /**
     * Phương thức tính số lượng trang trên trang quản trị tìm kiếm.
     */
    public static int tinhSoLuongTrangTrenTrangQuanTriTimKiem(int soLuongSanPhamTimThay){
        int soTrang = 0;
        try{
            int soLuongSanPhamTrenTrangQuanTriTimKiem = ThamSoDAO.laySoLuongSanPhamTrenTrangQuanTri();
            soTrang = soLuongSanPhamTimThay/soLuongSanPhamTrenTrangQuanTriTimKiem;
            if (soLuongSanPhamTimThay % soLuongSanPhamTrenTrangQuanTriTimKiem != 0){
                soTrang++;
            }
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return soTrang;
    } 
    
          /**
     * Phương thức tính số lượng trang trên trang tìm kiếm client.
     */
    public static int tinhSoLuongTrang_TimKiem_Client(int soLuongSanPhamTimThay){
        int soTrang = 0;
        try{
            int soLuongSanPhamTrenTrangTimKiemClient = ThamSoDAO.laySoLuongSanPhamTrenTrangClient();
            soTrang = soLuongSanPhamTimThay/soLuongSanPhamTrenTrangTimKiemClient;
            if (soLuongSanPhamTimThay % soLuongSanPhamTrenTrangTimKiemClient != 0){
                soTrang++;
            }
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return soTrang;
    } 
    
    /**
     * Phương thức tìm kiếm giày theo tên giày có phân trang.
     */
    public static ArrayList<GiayPOJO> timKiemGiayTheoTenGiayCoPhanTrang(String tenGiay, int trang){
        ArrayList<GiayPOJO> ds = new ArrayList<GiayPOJO>();
        try{
            int soSanPhamTrenTrangQuanTri = ThamSoDAO.laySoLuongSanPhamTrenTrangQuanTri();
            int batDau = (trang - 1) * soSanPhamTrenTrangQuanTri;
            String sql = "SELECT * FROM GIAY WHERE TenGiay like '%s' ORDER BY MaGiay desc LIMIT %d,%d";
            sql = String.format(sql, "%"+tenGiay+"%", batDau, soSanPhamTrenTrangQuanTri);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            while (rs.next()){
                GiayPOJO giay = new GiayPOJO();
                giay.setMaGiay(rs.getInt("MaGiay"));
                giay.setTenGiay(rs.getString("TenGiay"));
                giay.setGioiTinh(rs.getInt("GioiTinh"));
                giay.setGiaBan(rs.getFloat("GiaBan"));
                giay.setSoLuong(rs.getInt("SoLuong"));
                giay.setHinhAnh(rs.getString("HinhAnh"));
                giay.setMaMauSac(rs.getInt("MaMauSac"));
                giay.setMaLoaiGiay(rs.getInt("MaLoaiGiay"));
                giay.setMaTinhTrang(rs.getInt("MaTinhTrang"));
                ds.add(giay);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return ds;
    }
    
    /**
     * Phương thức tìm kiếm giày theo màu sắc giày có phân trang.
     */
    public static ArrayList<GiayPOJO> timKiemGiay_TheoMauSac_PhanTrang_QuanTri(String tenMauSac, int trang){
        ArrayList<GiayPOJO> ds = new ArrayList<GiayPOJO>();
        try{
            int maMauSac = MauSacDAO.timMaMauSacTheoTenMau(tenMauSac);
            if (maMauSac == 0){
                return ds;
            }
            int soSanPhamTrenTrangQuanTri = ThamSoDAO.laySoLuongSanPhamTrenTrangQuanTri();
            int batDau = (trang - 1) * soSanPhamTrenTrangQuanTri;
            String sql = "SELECT * FROM GIAY WHERE MaMauSac=%d ORDER BY MaGiay desc LIMIT %d,%d";
            sql = String.format(sql, maMauSac, batDau, soSanPhamTrenTrangQuanTri);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            while (rs.next()){
                GiayPOJO giay = new GiayPOJO();
                giay.setMaGiay(rs.getInt("MaGiay"));
                giay.setTenGiay(rs.getString("TenGiay"));
                giay.setGioiTinh(rs.getInt("GioiTinh"));
                giay.setGiaBan(rs.getFloat("GiaBan"));
                giay.setSoLuong(rs.getInt("SoLuong"));
                giay.setHinhAnh(rs.getString("HinhAnh"));
                giay.setMaMauSac(rs.getInt("MaMauSac"));
                giay.setMaLoaiGiay(rs.getInt("MaLoaiGiay"));
                giay.setMaTinhTrang(rs.getInt("MaTinhTrang"));
                ds.add(giay);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return ds;
    }    
    
    /**
     * Phương thức thêm giày.
     */
    public static int themGiay(GiayPOJO giay){
        int n = 0;
        try{
            String sql = "INSERT INTO GIAY(TenGiay,MaLoaiGiay,MaMauSac,GioiTinh,SoLuong,HinhAnh,GiaBan)";
            sql += " VALUES('%s',%d,%d,%d,%d,'%s',%f)";
            sql = String.format(sql, giay.getTenGiay(),giay.getMaLoaiGiay(),giay.getMaMauSac(),giay.getGioiTinh(),giay.getSoLuong(),giay.getHinhAnh(),giay.getGiaBan()); 
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            n = helper.executeUpdate(sql);
            ResultSet rs;
            if (n == 1){
                sql = "SELECT LAST_INSERT_ID();";
                rs = helper.executeQuery(sql);
                rs.next();
                n = rs.getInt(1);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return n;
    }
    
    /**
     * Phương thức cập nhật tình trạng giày.
     */
    public static boolean capNhatTinhTrangGiay(int maTinhTrang, int maGiay){
        boolean kq = false;
        try{
            String sql = "UPDATE GIAY SET MaTinhTrang=%d WHERE MaGiay=%d";
            sql = String.format(sql, maTinhTrang, maGiay); 
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            int n = helper.executeUpdate(sql);
            if (n == 1){
                kq = true;
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return kq;
    }
    
    /**
     * Phương thức cập nhật thông tin giày.
     */
    public static boolean capNhatThongTinGiay(GiayPOJO giay){
        boolean kq = false;
        try{
            String sql = "UPDATE GIAY SET TenGiay='%s', GioiTinh=%d,"
                    + " GiaBan=%f, SoLuong=%d,"
                    + " HinhAnh='%s', MaMauSac=%d,"
                    + " MaLoaiGiay=%d, MaTinhTrang=%d"
                    + " WHERE MaGiay=%d";
            sql = String.format(sql, giay.getTenGiay(), giay.getGioiTinh(),
                                     giay.getGiaBan(), giay.getSoLuong(),
                                     giay.getHinhAnh(), giay.getMaMauSac(),
                                     giay.getMaLoaiGiay(), giay.getMaTinhTrang(),
                                     giay.getMaGiay()); 
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            int n = helper.executeUpdate(sql);
            if (n == 1){
                kq = true;
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return kq;
    }
    
    /**
     * Phương thức tìm kiếm giày theo giới tính Client có phân trang.
     */
    public static ArrayList<GiayPOJO> timKiemGiayTheoGioiTinhCoPhanTrangClient(int trang, int gioiTinh){
        ArrayList<GiayPOJO> ds = new ArrayList<GiayPOJO>();
        try{
            int soSanPhamTrenTrangClient = ThamSoDAO.laySoLuongSanPhamTrenTrangClient();
            int batDau = (trang - 1) * soSanPhamTrenTrangClient;
            String sql = "SELECT * FROM GIAY WHERE MaTinhTrang!=3 AND GioiTinh=%d ORDER BY MaGiay desc LIMIT %d,%d";
            sql = String.format(sql, gioiTinh, batDau, soSanPhamTrenTrangClient);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            while (rs.next()){
                GiayPOJO giay = new GiayPOJO();
                giay.setMaGiay(rs.getInt("MaGiay"));
                giay.setTenGiay(rs.getString("TenGiay"));
                giay.setGioiTinh(rs.getInt("GioiTinh"));
                giay.setGiaBan(rs.getFloat("GiaBan"));
                giay.setSoLuong(rs.getInt("SoLuong"));
                giay.setHinhAnh(rs.getString("HinhAnh"));
                giay.setMaMauSac(rs.getInt("MaMauSac"));
                giay.setMaLoaiGiay(rs.getInt("MaLoaiGiay"));
                giay.setMaTinhTrang(rs.getInt("MaTinhTrang"));
                ds.add(giay);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return ds;
    }
    
    /**
     * Phương thức tính tổng số sản phẩm tìm thấy theo theo giới tính Client.
     */
    public static int tinhTongSoSanPhamTheoGioiTinhClient(int gioiTinh){
        int t = 0;
        try{
            String sql = "SELECT COUNT(MaGiay) as Tong FROM GIAY WHERE MaTinhTrang!=3 AND GioiTinh=%d";
            sql = String.format(sql, gioiTinh);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            if (rs.next()){
                t = rs.getInt("Tong");
            }
            
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return t;
    }
    
    /**
     * Phương thức tìm kiếm giày theo loại giày Client có phân trang.
     */
    public static ArrayList<GiayPOJO> timKiemGiay_TheoLoaiGiay_PhanTrang_Client(int trang, int maLoaiGiay, int gioiTinh){
        ArrayList<GiayPOJO> ds = new ArrayList<GiayPOJO>();
        try{
            int soSanPhamClient = ThamSoDAO.laySoLuongSanPhamTrenTrangClient();
            int batDau = (trang - 1) * soSanPhamClient;
            String sql = "SELECT * FROM GIAY WHERE MaTinhTrang!=3 AND GioiTinh=%d AND MaLoaiGiay=%d ORDER BY MaGiay desc LIMIT %d,%d";
            sql = String.format(sql, gioiTinh, maLoaiGiay, batDau, soSanPhamClient);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            while (rs.next()){
                GiayPOJO giay = new GiayPOJO();
                giay.setMaGiay(rs.getInt("MaGiay"));
                giay.setTenGiay(rs.getString("TenGiay"));
                giay.setGioiTinh(rs.getInt("GioiTinh"));
                giay.setGiaBan(rs.getFloat("GiaBan"));
                giay.setSoLuong(rs.getInt("SoLuong"));
                giay.setHinhAnh(rs.getString("HinhAnh"));
                giay.setMaMauSac(rs.getInt("MaMauSac"));
                giay.setMaLoaiGiay(rs.getInt("MaLoaiGiay"));
                giay.setMaTinhTrang(rs.getInt("MaTinhTrang"));
                ds.add(giay);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return ds;
    }
    
    /**
     * Phương thức tìm kiếm giày theo màu sắc Client phân trang.
     */
    public static ArrayList<GiayPOJO> timKiemGiay_TheoMauSac_PhanTrang_Client(int trang, int maMauSac, int gioiTinh){
        ArrayList<GiayPOJO> ds = new ArrayList<GiayPOJO>();
        try{
            int soSanPhamClient = ThamSoDAO.laySoLuongSanPhamTrenTrangClient();
            int batDau = (trang - 1) * soSanPhamClient;
            String sql = "SELECT * FROM GIAY WHERE MaTinhTrang!=3 AND GioiTinh=%d AND MaMauSac=%d ORDER BY MaGiay desc LIMIT %d,%d";
            sql = String.format(sql, gioiTinh, maMauSac, batDau, soSanPhamClient);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            while (rs.next()){
                GiayPOJO giay = new GiayPOJO();
                giay.setMaGiay(rs.getInt("MaGiay"));
                giay.setTenGiay(rs.getString("TenGiay"));
                giay.setGioiTinh(rs.getInt("GioiTinh"));
                giay.setGiaBan(rs.getFloat("GiaBan"));
                giay.setSoLuong(rs.getInt("SoLuong"));
                giay.setHinhAnh(rs.getString("HinhAnh"));
                giay.setMaMauSac(rs.getInt("MaMauSac"));
                giay.setMaLoaiGiay(rs.getInt("MaLoaiGiay"));
                giay.setMaTinhTrang(rs.getInt("MaTinhTrang"));
                ds.add(giay);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return ds;
    }
    
    /**
     * Phương thức tìm kiếm giày theo loại giày, màu sắc Client phân trang.
     */
    public static ArrayList<GiayPOJO> timKiemGiay_TheoLoaiGiay_TheoMauSac_PhanTrang_Client(int trang, int maLoaiGiay, int maMauSac, int gioiTinh){
        ArrayList<GiayPOJO> ds = new ArrayList<GiayPOJO>();
        try{
            int soSanPhamClient = ThamSoDAO.laySoLuongSanPhamTrenTrangClient();
            int batDau = (trang - 1) * soSanPhamClient;
            String sql = "SELECT * FROM GIAY WHERE MaTinhTrang!=3 AND GioiTinh=%d AND MaLoaiGiay=%d AND MaMauSac=%d ORDER BY MaGiay desc LIMIT %d,%d";
            sql = String.format(sql, gioiTinh, maLoaiGiay, maMauSac, batDau, soSanPhamClient);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            while (rs.next()){
                GiayPOJO giay = new GiayPOJO();
                giay.setMaGiay(rs.getInt("MaGiay"));
                giay.setTenGiay(rs.getString("TenGiay"));
                giay.setGioiTinh(rs.getInt("GioiTinh"));
                giay.setGiaBan(rs.getFloat("GiaBan"));
                giay.setSoLuong(rs.getInt("SoLuong"));
                giay.setHinhAnh(rs.getString("HinhAnh"));
                giay.setMaMauSac(rs.getInt("MaMauSac"));
                giay.setMaLoaiGiay(rs.getInt("MaLoaiGiay"));
                giay.setMaTinhTrang(rs.getInt("MaTinhTrang"));
                ds.add(giay);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return ds;
    }
    
    /**
     * Phương thức tính số lượng giày theo loại giày Client.
     */
    public static int tinh_SoLuongGiay_TheoLoaiGiay_Client(int maLoaiGiay, int gioiTinh){
        int soLuong = 0;
        try{
            String sql = "SELECT count(*) FROM GIAY WHERE MaTinhTrang!=3 AND GioiTinh=%d AND MaLoaiGiay=%d";
            sql = String.format(sql, gioiTinh, maLoaiGiay);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            if (rs.next()){
                soLuong = rs.getInt(1);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return soLuong;
    }
    
    /**
     * Phương thức tính số lượng giày theo màu sắc Client.
     */
    public static int tinh_SoLuongGiay_TheoMauSac_Client(int maMauSac, int gioiTinh){
        int soLuong = 0;
        try{
            String sql = "SELECT count(*) FROM GIAY WHERE MaTinhTrang!=3 AND GioiTinh=%d AND MaMauSac=%d";
            sql = String.format(sql, gioiTinh, maMauSac);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            if (rs.next()){
                soLuong = rs.getInt(1);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return soLuong;
    }
    
    /**
     * Phương thức tính số lượng giày theo loại giày, màu sắc Client.
     */
    public static int tinh_SoLuongGiay_TheoLoaiGiay_TheoMauSac_Client(int maLoaiGiay, int maMauSac, int gioiTinh){
        int soLuong = 0;
        try{
            String sql = "SELECT count(*) FROM GIAY WHERE MaTinhTrang!=3 AND GioiTinh=%d AND MaLoaiGiay=%d AND MaMauSac=%d";
            sql = String.format(sql, gioiTinh, maLoaiGiay, maMauSac);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            if (rs.next()){
                soLuong = rs.getInt(1);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return soLuong;
    }
    
    /**
     * Phương thức tính tổng số sản phẩm tìm thấy theo theo loại giày Client.
     */
    public static int tinhTongSoSanPhamTheoLoaiGiayClient(int maLoaiGiay, int gioiTinh){
        int t = 0;
        try{
            String sql = "SELECT COUNT(MaGiay) as Tong FROM GIAY WHERE MaTinhTrang!=3 AND MaLoaiGiay=%d AND GioiTinh=%d";
            sql = String.format(sql, maLoaiGiay, gioiTinh);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            if (rs.next()){
                t = rs.getInt("Tong");
            }
            
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return t;
    }
    
    /**
     * Phương thức tính tổng số sản phẩm tìm thấy theo theo loại giày Client.
     */
    public static int tinhTongSoSanPhamTheoMauSacClient(int maMauSac, int gioiTinh){
        int t = 0;
        try{
            String sql = "SELECT COUNT(MaGiay) as Tong FROM GIAY WHERE MaTinhTrang!=3 AND MaMauSac=%d AND GioiTinh=%d";
            sql = String.format(sql, maMauSac, gioiTinh);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            if (rs.next()){
                t = rs.getInt("Tong");
            }
            
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return t;
    }
    
    /**
     * Phương thức tính tổng số sản phẩm tìm thấy theo theo loại giày, màu sắc Client.
     */
    public static int tinhTongSoSanPhamTheoLoaiGiayMauSacClient(int maLoaiGiay, int maMauSac, int gioiTinh){
        int t = 0;
        try{
            String sql = "SELECT COUNT(MaGiay) as Tong FROM GIAY WHERE MaTinhTrang!=3 AND MaLoaiGiay=%d AND MaMauSac=%d AND GioiTinh=%d ORDER BY MaGiay desc";
            sql = String.format(sql, maLoaiGiay, maMauSac, gioiTinh);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            if (rs.next()){
                t = rs.getInt("Tong");
            }
            
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return t;
    }
    
    /**
     * Phương thức tìm kiếm giày theo màu sắc Client có phân trang.
     */
    public static ArrayList<GiayPOJO> timKiemGiayTheoMaMauSacCoPhanTrangClient(int trang, int maMauSac, int gioiTinh){
        ArrayList<GiayPOJO> ds = new ArrayList<GiayPOJO>();
        try{
            int soSanPhamTrenTrangClient = ThamSoDAO.laySoLuongSanPhamTrenTrangClient();
            int batDau = (trang - 1) * soSanPhamTrenTrangClient;
            String sql = "SELECT * FROM GIAY WHERE MaTinhTrang!=3 AND MaMauSac=%d AND GioiTinh=%d ORDER BY MaGiay desc LIMIT %d,%d";
            sql = String.format(sql, maMauSac, gioiTinh, batDau, soSanPhamTrenTrangClient);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            while (rs.next()){
                GiayPOJO giay = new GiayPOJO();
                giay.setMaGiay(rs.getInt("MaGiay"));
                giay.setTenGiay(rs.getString("TenGiay"));
                giay.setGioiTinh(rs.getInt("GioiTinh"));
                giay.setGiaBan(rs.getFloat("GiaBan"));
                giay.setSoLuong(rs.getInt("SoLuong"));
                giay.setHinhAnh(rs.getString("HinhAnh"));
                giay.setMaMauSac(rs.getInt("MaMauSac"));
                giay.setMaLoaiGiay(rs.getInt("MaLoaiGiay"));
                giay.setMaTinhTrang(rs.getInt("MaTinhTrang"));
                ds.add(giay);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return ds;
    }
    
    /**
     * Phương thức tìm kiếm giày theo màu sắc và loại giày Client có phân trang.
     */
    public static ArrayList<GiayPOJO> timKiemGiayTheoMaMauSacMaLoaiGiayCoPhanTrangClient(int trang, int maMauSac, int maLoaiGiay, int gioiTinh){
        ArrayList<GiayPOJO> ds = new ArrayList<GiayPOJO>();
        try{
            int soSanPhamTrenTrangClient = ThamSoDAO.laySoLuongSanPhamTrenTrangClient();
            int batDau = (trang - 1) * soSanPhamTrenTrangClient;
            String sql = "SELECT * FROM GIAY WHERE MaTinhTrang!=3 AND MaMauSac=%d AND MaLoaiGiay=%d AND GioiTinh=%d ORDER BY MaGiay desc LIMIT %d,%d";
            sql = String.format(sql, maMauSac, maLoaiGiay, gioiTinh, batDau, soSanPhamTrenTrangClient);
            
            //Kết nối csdl.
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            
            while (rs.next()){
                GiayPOJO giay = new GiayPOJO();
                giay.setMaGiay(rs.getInt("MaGiay"));
                giay.setTenGiay(rs.getString("TenGiay"));
                giay.setGioiTinh(rs.getInt("GioiTinh"));
                giay.setGiaBan(rs.getFloat("GiaBan"));
                giay.setSoLuong(rs.getInt("SoLuong"));
                giay.setHinhAnh(rs.getString("HinhAnh"));
                giay.setMaMauSac(rs.getInt("MaMauSac"));
                giay.setMaLoaiGiay(rs.getInt("MaLoaiGiay"));
                giay.setMaTinhTrang(rs.getInt("MaTinhTrang"));
                ds.add(giay);
            }
            //Đóng kết nối.
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return ds;
    }
}
